home *** CD-ROM | disk | FTP | other *** search
/ Loadstar Extras 3 / Ex3side2.d64 / iprg2 source < prev    next >
Text File  |  2022-08-28  |  20KB  |  1,828 lines

  1.  
  2. open =$ffc0
  3. readst =$ffb7
  4. setlfs =$ffba
  5. setnam =$ffbd
  6. setmsg =$ff90
  7. load =$ffd5
  8. getin =$ffe4
  9. input'buffer =512
  10. clrchn =$ffcc
  11. close =$ffc3   ;a
  12. chrin =$ffcf
  13. chkout =$ffc9  ;x
  14. chkin =$ffc6   ;x
  15. plot =$fff0
  16. chrout =$ffd2
  17. color'pointer =243
  18. screen'line'pointer =209
  19. print'number =$bdcd ;x,a
  20. clear'line =59903
  21. background =53281
  22. border =53280
  23. strout = $ab1e; .A low .Y high
  24. unlisten =$ffae
  25. clall =$ffe7
  26. color1 =53282
  27. color2 =53283
  28. color3 =53284
  29. white =5
  30. crsr'down =17
  31. rvs'on =18
  32. home =19
  33. del =20
  34. red =28
  35. crsr'right =29
  36. green =30
  37. blue =31
  38. black =144
  39. lowercase =14
  40. uppercase =142
  41. crsr'up =145
  42. rvs'off =146
  43. clr =147
  44. insert =148
  45. brown =149
  46. light'red =150
  47. dark'grey =151
  48. medium'grey =152
  49. light'green =153
  50. light'blue =154
  51. light'grey =155
  52. purple =156
  53. crsr'left =157
  54. yellow =158
  55. cyan =159
  56. top'left =176
  57. top'right =174
  58. bottom'left =173
  59. bottom'right =189
  60. error'string =$200
  61. buffer =$200
  62.  
  63. swap'source =251
  64. swap'end =253
  65. swap'destination =$14
  66.  
  67. .org $0800
  68. .obj "@0:iprg2 0800"
  69. ;mem
  70.  
  71. jmp do'page
  72. jmp add'item;3
  73. jmp add'description;6
  74. jmp alter'font;9
  75. jmp add'title;12
  76. jmp change'colors;15
  77. jmp change'report;18
  78. jmp menu'entry;21
  79. jmp box'entry;24
  80. jmp screen'stash;27
  81. jmp screen'restore;30
  82. jmp linx;33
  83. jmp print'at;36
  84. jmp center;39
  85. jmp ucase;42
  86. jmp lcase;45
  87. jmp brancher;48
  88. jmp input'dir;51;
  89. jmp input'any;54
  90. jmp get'word;57;
  91. jmp read'block;60
  92. jmp write'block;63
  93. jmp write'range;66
  94. jmp get'blox;69
  95. jmp swappymem; copymem 72
  96. jmp swappymem+7;swappymem 75
  97. jmp swappymem+14;copy with roms on 78
  98. jmp reverse'entry; 81
  99. ;sys source,end+1,dest
  100. ;copy =addr
  101. ;swap =addr+7
  102. ;ROM in copy =addr+14
  103. ;sys,addr y,x1,x2,number items,text,highlight,hot$
  104.  
  105. ;***sys addr,x,to x,y,to y,s-code,color
  106.  
  107. box'entry lda #0
  108. sta temp
  109. - jsr get'number
  110. tya
  111. ldy temp
  112. sta box'parameters,y
  113. inc temp
  114. cpy #5
  115. bne -
  116.  
  117. fill'box jsr linx
  118. lda 214
  119. pha
  120. lda 211
  121. pha
  122. box'start ldx box'parameters+2
  123. ldy #0
  124. clc
  125. jsr $fff0
  126. jsr old'rom'patch
  127. dec box'parameters
  128. ;inc box'parameters+3
  129.  
  130. - ldy box'parameters+1
  131. - lda box'parameters+5
  132. cmp #16
  133. bcs +
  134. lda box'parameters+4
  135. sta (209),y
  136. + lda box'parameters+5
  137. sta (243),y
  138. dey
  139. cpy box'parameters
  140. bne -
  141. lda 214
  142. cmp box'parameters+3
  143. beq +
  144.  
  145. inc 214
  146. jsr 58732
  147. jsr old'rom'patch
  148. jmp --
  149. + lda #home
  150. jsr $ffd2
  151. pla
  152. sta 211
  153. pla
  154. sta 214
  155. jmp 58732
  156.  
  157. linx ldy #24
  158. - lda 217,y
  159. ora #128
  160. sta 217,y
  161. dey
  162. bpl -
  163. rts
  164.  
  165. screen'stash sec
  166. jsr plot
  167. stx menuy
  168. sty menux1
  169.  
  170. jsr get'number
  171. tya
  172. sta 252
  173. cmp >1024
  174. bcs +
  175. rts
  176.  
  177. + clc
  178. adc #4
  179. sta 254
  180. lda #0
  181. sta 253
  182. sta 251
  183.  
  184. lda #home
  185. jsr chrout
  186. jsr old'rom'patch
  187. sei
  188. lda #0
  189. sta 1
  190.  
  191. ldx #3
  192. ldy #0
  193. - lda (209),y
  194. sta (251),y
  195. dec 1
  196. lda (243),y
  197. inc 1
  198. sta (253),y
  199. iny
  200. bne -
  201. inc 210
  202. inc 252
  203. inc 244
  204. inc 254
  205. dex
  206. bpl -
  207. dec 254
  208. ldy #233
  209. dec 1
  210. lda 53280
  211. inc 1
  212. sta (253),y
  213. iny
  214. dec 1
  215. lda 53281
  216. inc 1
  217. sta (253),y
  218. iny
  219. lda menuy
  220. sta (253),y
  221. iny
  222. lda menux1
  223. sta (253),y
  224. lda #$77
  225. sta 1
  226. cli
  227. ldy menux1
  228. ldx menuy
  229. clc
  230. jmp plot
  231.  
  232. screen'restore jsr get'number
  233. tya
  234. sta 252
  235. clc
  236. adc #4
  237. sta 254
  238. lda #0
  239. sta 253
  240. sta 251
  241.  
  242. lda #home
  243. jsr chrout
  244. jsr old'rom'patch
  245. sei
  246. lda #0
  247. sta 1
  248.  
  249. ldx #3
  250. ldy #0
  251.  
  252. - lda (251),y
  253. sta (209),y
  254. lda (253),y
  255. dec 1
  256. sta (243),y
  257. inc 1
  258. iny
  259. bne -
  260. inc 210
  261. inc 252
  262. inc 244
  263. inc 254
  264. dex
  265. bpl -
  266. dec 254
  267. ldy #233
  268. lda (253),y
  269. dec 1
  270. sta 53280
  271. iny
  272. inc 1
  273. lda (253),y
  274. dec 1
  275. sta 53281
  276. inc 1
  277. iny
  278. lda (253),y
  279. sta 214
  280. iny
  281. lda (253),y
  282. sta 211
  283. lda #$77
  284. sta 1
  285. cli
  286. jmp 58732
  287.  
  288. menu'entry lda #0
  289. sta temp
  290. sta flag
  291. - jsr get'number
  292. tya
  293. ldy temp
  294. sta menuy,y
  295. inc temp
  296. cpy #5
  297. bne -
  298.  
  299. menu jsr get'string
  300. sta key
  301. ldy #0
  302. - lda ($22),y
  303. sta keybuff,y
  304. iny
  305. cpy key
  306. bcc -
  307. lda key
  308. clc
  309. adc #3
  310. sta key
  311. lda <allowed'keys
  312. sta $22
  313. lda >allowed'keys
  314. sta $23
  315.  
  316. jsr linx
  317. ldx menuy
  318. ldy #0
  319. sty menu'current
  320. clc
  321. jsr plot
  322. jsr old'rom'patch
  323. lda menu'highlight
  324. sta mcolor
  325. jsr paint'line
  326.  
  327. menu'wait jsr branch2
  328. ldx menu'current
  329. stx temp
  330. pha
  331. jsr normalize'line
  332. pla
  333.  
  334. cmp #2
  335. beq menu'down
  336.  
  337. cmp #1
  338. beq menu'up
  339.  
  340. cmp #3
  341. beq menu'select
  342.  
  343. cmp #4
  344. bcc menu'wait
  345. sec
  346. sbc #4
  347. sta menu'current
  348. jmp menu'select
  349.  
  350. menu'wait'loop jmp menu'wait
  351.  
  352. menu'down inc menu'current
  353. lda menu'current
  354. cmp menu'items
  355. bne highlight
  356. lda #0
  357. sta menu'current
  358. jmp highlight
  359.  
  360. menu'up dec menu'current
  361. lda menu'current
  362. cmp #255
  363. beq +
  364. jmp highlight
  365.  
  366. + ldy menu'items
  367. dey
  368. sty menu'current
  369. jmp highlight
  370.  
  371. menu'select jsr normalize'line
  372. lda menu'current
  373. clc
  374. adc #1
  375. jmp do'report
  376.  
  377. normalize'line lda menu'current
  378. cmp menu'items
  379. bcc +
  380. rts
  381.  
  382. + clc
  383. adc menuy
  384. tax
  385. ldy #0
  386. jsr plot
  387. jsr old'rom'patch
  388. lda menu'text
  389. sta mcolor
  390. jmp paint'line
  391.  
  392. highlight lda menuy
  393. clc
  394. adc menu'current
  395. tax
  396. ldy #0
  397. clc
  398. jsr plot
  399. jsr old'rom'patch
  400. lda menu'highlight
  401. sta mcolor
  402. jsr paint'line
  403. jmp menu'wait
  404.  
  405. paint'line ldy menux1
  406. - lda mcolor
  407. sta (243),y
  408. bmi +
  409. lda (209),y
  410. eor #128
  411. sta (209),y
  412. + iny
  413. cpy menux2
  414. beq -
  415. bcc -
  416. lda temp
  417. pha
  418. jsr print'info
  419. pla
  420. sta temp
  421. rts
  422.  
  423. ;**** get number from BASIC ****
  424.  
  425. get'number jsr $aefd
  426. jsr $ad8a
  427. jsr $b7f7
  428. rts
  429.  
  430.  
  431. ;***** get string from BASIC ****
  432.  
  433. get'string jsr $aefd
  434. jsr $ad9e
  435. jsr $b6a3
  436.  
  437. ldx $22
  438. ldy $23
  439. rts
  440.  
  441. print'at jsr linx
  442. jsr get'number
  443. sty 211
  444. jsr get'number
  445. sty 214
  446. jsr 58732
  447. jsr get'string
  448. sta temp
  449.  
  450. print'string ldy #0
  451. - lda ($22),y
  452. jsr chrout
  453. iny
  454. cpy temp
  455. bne -
  456. rts
  457.  
  458. ucase jsr get'string
  459. sta temp
  460. ldy #0
  461. - lda ($22),y
  462. cmp #65
  463. bcc +
  464. ora #128
  465. sta ($22),y
  466. + iny
  467. cpy temp
  468. bne -
  469. rts
  470.  
  471. lcase jsr get'string
  472. sta temp
  473. ldy #0
  474. - lda ($22),y
  475. and #127
  476. sta ($22),y
  477. iny
  478. cpy temp
  479. bne -
  480. rts
  481.  
  482. center jsr get'number
  483. tya
  484. tax
  485. ldy #0
  486. clc
  487. jsr plot
  488.  
  489. jsr get'string
  490. sta temp
  491.  
  492. lsr
  493. sta flag
  494. lda #20
  495. sec
  496. sbc flag
  497. sta 211
  498. jsr 58732
  499. jmp print'string
  500.  
  501. old'rom'patch lda 210
  502. sec
  503. sbc 648
  504. clc
  505. adc #$d8
  506. sta 244
  507. lda 209
  508. sta 243
  509. rts
  510.  
  511. do'box stx 251
  512. sty 252
  513. ldy #5
  514. - lda (251),y
  515. sta box'parameters,y
  516. dey
  517. bpl -
  518. jmp fill'box
  519.  
  520. do'menu stx 251
  521. sty 252
  522. ldy #6
  523. - lda (251),y
  524. sta menuy,y
  525. dey
  526. bpl -
  527. jmp menu
  528.  
  529. do'page ldy border'color
  530. sty 53280
  531. ldy background'color
  532. sty 53281
  533.  
  534. jsr get'number
  535. sty features
  536. jsr find'longest
  537.  
  538. lda longest
  539. clc
  540. adc #2
  541. lsr
  542. sta temp
  543. lda #19
  544. sec
  545. sbc temp
  546. sta middle'shadow
  547. sta middle
  548. clc
  549. adc longest
  550. adc #2
  551. sta middle'shadow+1
  552. sta middle+1
  553. inc middle
  554. inc middle+1
  555. lda backdrop+5
  556. and #127
  557. tay
  558. lda shades,y
  559. ora #128
  560. sta middle'shadow+5
  561. sta title'shadow+5
  562.  
  563. lda features
  564. lsr
  565. clc
  566. adc #2
  567. sta temp
  568. lda #15
  569. sec
  570. sbc temp
  571. sta middle+2
  572. sta middle'shadow+2
  573. inc middle'shadow+2
  574. clc
  575. adc features
  576. clc
  577. adc #1
  578. sta middle+3
  579. sta middle'shadow+3
  580. inc middle'shadow+3
  581.  
  582. ldx <backdrop
  583. ldy >backdrop
  584. jsr do'box
  585.  
  586. ldx <title'shadow
  587. ldy >title'shadow
  588. jsr do'box
  589.  
  590. ldx <title
  591. ldy >title
  592. jsr do'box
  593.  
  594. ldx <middle'shadow
  595. ldy >middle'shadow
  596. jsr do'box
  597.  
  598. ldx <middle
  599. ldy >middle
  600. jsr do'box
  601.  
  602. ldx <bottom
  603. ldy >bottom
  604. jsr do'box
  605.  
  606. lda #1
  607. sta 255
  608.  
  609. - lda 255
  610. clc
  611. adc middle+2
  612. tax
  613. ldy middle
  614. iny
  615.  
  616. clc
  617. jsr plot
  618. lda middle+5
  619. sta 646
  620. lda middle+4
  621. and #128
  622. sta 199
  623. lda 255
  624. jsr index'item
  625. ldy #0
  626. - lda (251),y
  627. beq +
  628. jsr chrout
  629. iny
  630. bne -
  631. + inc 255
  632. lda 255
  633. cmp features
  634. bcc --
  635. beq --
  636.  
  637. ldy middle+2
  638. iny
  639. sty page'parameters
  640. lda middle
  641. sta page'parameters+1
  642. lda middle+1
  643. sta page'parameters+2
  644. lda features
  645. sta page'parameters+3
  646. lda middle+5
  647. ;ora #128
  648. sta page'parameters+4
  649. lda title+5
  650. ;ora #128
  651. sta page'parameters+5
  652. lda middle+5
  653. sta page'parameters+6
  654.  
  655. lda #0
  656. sta 199
  657.  
  658. lda bottom+5
  659. sta 646
  660.  
  661. ldx #24
  662. ldy #8
  663. clc
  664. jsr plot
  665.  
  666. lda <bottom'message
  667. ldy >bottom'message
  668. jsr strout
  669.  
  670. jsr print'title
  671.  
  672. ldx <page'parameters
  673. ldy >page'parameters
  674. jsr do'menu
  675.  
  676.  
  677. rts
  678.  
  679.  
  680. add'item lda <menu'slots
  681. sta 251
  682. lda >menu'slots
  683. sta 252
  684. alt'add jsr get'number
  685. alt'item tya
  686. sta temp
  687. asl
  688. clc
  689. adc temp
  690. clc
  691. adc 251
  692. sta 251
  693. lda #0
  694. adc 252
  695. sta 252
  696.  
  697. jsr get'string
  698. ldy #2
  699. sta (251),y
  700. lda $23
  701. dey
  702. sta (251),y
  703. lda $22
  704. dey
  705. sta (251),y
  706. rts
  707.  
  708. add'description lda <descriptions
  709. sta 251
  710. lda >descriptions
  711. sta 252
  712. jmp alt'add
  713.  
  714. index'item pha
  715. lda <menu'slots
  716. sta 253
  717. lda >menu'slots
  718. sta 254
  719. alt'index pla
  720. sta temp
  721. asl
  722. clc
  723. adc temp
  724. clc
  725. adc 253
  726. sta 253
  727. lda #0
  728. adc 254
  729. sta 254
  730.  
  731. ldy #0
  732. lda (253),y
  733. sta 251
  734. iny
  735. lda (253),y
  736. sta 252
  737. iny
  738. lda (253),y
  739. sta wlength
  740. rts
  741.  
  742. index'description pha
  743. lda <descriptions
  744. sta 253
  745. lda >descriptions
  746. sta 254
  747. jmp alt'index
  748.  
  749. find'longest lda #1
  750. sta 255
  751. lda #0
  752. sta longest
  753.  
  754. - lda 255
  755. jsr index'item
  756. lda wlength
  757. cmp longest
  758. bcc +
  759. sta longest
  760. + inc 255
  761. lda 255
  762. cmp features
  763. bcc -
  764. beq -
  765. rts
  766.  
  767. print'title lda #0
  768. jsr index'item
  769.  
  770. lda wlength
  771. lsr
  772. sta temp+1
  773. lda #20
  774. sec
  775. sbc temp+1
  776. tay
  777. ldx #3
  778. clc
  779. jsr plot
  780.  
  781. lda #1
  782. sta 199
  783. lda title+5
  784. sta 646
  785.  
  786. ldy #0
  787. - lda (251),y
  788. jsr chrout
  789. iny
  790. cpy wlength
  791. bne -
  792. rts
  793.  
  794. print'info ldy menu'current
  795. cpy #10
  796. bcc +
  797. rts
  798. + iny
  799. tya
  800. jsr index'description
  801. lda wlength
  802. bne +
  803. rts
  804.  
  805. + ldx <b